package com.atguigu.gulimail.coupon;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/*
*1 nacos做配置中心统一管理配置
*   1引入依赖
*       <dependency>
*            <groupId>com.alibaba.cloud</groupId>
*            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
*       </dependency>
*   2在微服务下创建一个bootstrap.properties配置文件 添加两项配置：配置服务应用名称和nacos配置中心得服务地址
*   #配置当前服务名称
*   spring.application.name=gulimail-coupon
*   #配置配置中心的服务地址
*   spring.cloud.nacos.config.server-addr=127.0.0.1:8848
*   3 在nacos得可视界面得配置中心得添加一个数据集（data Id）	gulimail-coupon.properties 服务的应用名称.properties
*   4给应用名.properties 添加配置
*   5动态刷新获取修改得配置，结合两个注解 @Value("${}")注解，@RefreshScope注解
*   如果配置中心和当前的应用配置文件中配置相同的配置项，优先使用配置中心得配置
*
*  2细节
*   1)、命名空间： 配置隔离 默认：public(保留空间)： 默认新增的所有的配置都在public命名空间
*           1开发  生产  测试 利用命名空间做配置环境隔离
*           注意：在bootstrap.properties:配置上，需要使用那个命名空间下的配置
*           在bootstrap.properties的配置中心添加
*           #指定使用的命名空间 填写命名空间的id
            spring.cloud.nacos.config.namespace=0b35c654-f439-4e6b-a589-91da7fb2b604
*   2）配置集： 所有的配置的集合，配置集 类似一个配置文件中的的所有配置的集合
*   3）配置集ID： 相当于配置文件名，  在nacos中data ID 表示配置集
*   4)配置分组：  默认的所有的配置都属于：DEFAULT_GROUP:
* 每一个微服务的创建自己的命名空间，使用配置分组区分环境：dev  test  prop
*
* 4配置中心总结
*   1同时加载多个配置集（配置文件）
*       1微服务的任何配置信息和任何配置文件都可以放在配置中心中
*       2只需在bootstrap.properties配置文件中配置那些配置文件的即可
*       3@Value 和@ConfigurationProperties..任何从配置文件中获取数据地注解都可以使用
* 配置中心有的配置文件优先使用配置中的配置
*
* */

@SpringBootApplication
@EnableDiscoveryClient //开启服务的注册客户端
@MapperScan("com.atguigu.gulimail.coupon.dao")
public class GulimailCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimailCouponApplication.class, args);
    }

}

/*
* 路由网关：1写路由规则，2写过滤器 3断言地逻辑（是否服务满足路由规则，满足路由规则，
* 请求转发到指定地微服务，其中经过一系列地过滤器）
*
* */